Skip to content

Add integration tests and CI workflow for interpreter detection#3705

Merged
zackverham merged 4 commits intomainfrom
interpreters-integration-tests
Mar 12, 2026
Merged

Add integration tests and CI workflow for interpreter detection#3705
zackverham merged 4 commits intomainfrom
interpreters-integration-tests

Conversation

@zackverham
Copy link
Collaborator

@zackverham zackverham commented Mar 12, 2026

Summary

  • Adds integration tests (integration.test.ts) that validate the interpreter detection module against real Python/R executables and a real temporary filesystem
  • Adds CI workflow (interpreter-integration.yaml) with a matrix covering Python 3.9–3.13, R 4.1–4.4, across Ubuntu/macOS/Windows
  • Wires the workflow into the pull-request CI as a required job
  • Adds test-integration-interpreters npm script

This is PR 3 of 3 splitting up #3672. Testing infrastructure only — no production code changes. Can be reviewed independently of PR 2.

PRs: PR 1 (#3703, merged) | PR 2 (#3704) | PR 3 (this)

Test plan

  • npx tsc --noEmit passes
  • Integration tests run locally (tests skip gracefully when interpreters are unavailable)
  • CI matrix passes

🤖 Generated with Claude Code

@zackverham zackverham requested a review from a team as a code owner March 12, 2026 13:59
@zackverham zackverham force-pushed the interpreters-wiring branch from d859387 to 9728cb9 Compare March 12, 2026 15:12
@zackverham zackverham force-pushed the interpreters-integration-tests branch from fb48150 to 7063944 Compare March 12, 2026 15:23
@zackverham zackverham force-pushed the interpreters-wiring branch from 9728cb9 to 79ac36e Compare March 12, 2026 19:24
Add end-to-end integration tests that validate the interpreter detection
module against real Python and R executables and a real filesystem.

Changes:
- integration.test.ts: tests from low-level fsUtils through full
  getInterpreterDefaults pipeline, using real temp files and executables
- interpreter-integration.yaml: CI workflow with matrix of Python 3.9-3.13,
  R 4.1-4.4, across Ubuntu/macOS/Windows
- pull-request.yaml: wire up interpreter-integration as a required job
- package.json: add test-integration-interpreters npm script

Tests use test.skipIf() when an interpreter isn't available, so the
suite runs cleanly in any environment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@zackverham zackverham force-pushed the interpreters-integration-tests branch from 7063944 to 72857ee Compare March 12, 2026 19:25
@zackverham zackverham changed the base branch from interpreters-wiring to main March 12, 2026 19:25
zackverham and others added 3 commits March 12, 2026 15:32
Eliminates the shared tmpDir/beforeAll/afterAll pattern that leaked
state between tests. Each test now creates and cleans up its own
isolated temp directory via mkdtemp + try/finally.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace repeated mkdtemp/try/finally/rm pattern across all tests with
a withTempDir(fn) helper that handles creation and cleanup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Collaborator

@christierney christierney left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

Is the integration test also going to be run by the test-unit command? If so, is that ok?

@zackverham
Copy link
Collaborator Author

Is the integration test also going to be run by the test-unit command? If so, is that ok?

Technically yes, but anything that requires a true interpreter to exist will just get skipped. So I think that's fine.

@zackverham zackverham merged commit e4da839 into main Mar 12, 2026
39 checks passed
@zackverham zackverham deleted the interpreters-integration-tests branch March 12, 2026 20:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants